// TokenType.cs
// Script#/Core/Compiler
// This source code is subject to terms and conditions of the Apache License, Version 2.0.
//

using System;

namespace ScriptSharp.CodeModel {

    /// <summary>
    /// The list of valid token types.
    /// NOTE: Must keep this list in sync with the Token static constuctor.
    /// </summary>
    internal enum TokenType {
        Abstract,
        As,
        Base,
        Bool,
        Break,
        Byte,
        Case,
        Catch,
        Char,
        Checked,
        Class,
        Const,
        Continue,
        Decimal,
        Default,
        Delegate,
        Do,
        Double,
        Else,
        Enum,
        Event,
        Explicit,
        Extern,
        False,
        Finally,
        Fixed,
        Float,
        For,
        Foreach,
        Goto,
        If,
        In,
        Implicit,
        Int,
        Interface,
        Internal,
        Is,
        Lock,
        Long,
        Namespace,
        New,
        Null,
        Object,
        Operator,
        Out,
        Override,
        Params,
        Private,
        Protected,
        Public,
        Readonly,
        Ref,
        Return,
        SByte,
        Sealed,
        Short,
        Sizeof,
        Stackalloc,
        Static,
        String,
        Struct,
        Switch,
        This,
        Throw,
        True,
        Try,
        Typeof,
        UInt,
        ULong,
        Unchecked,
        Unsafe,
        UShort,
        Using,
        Virtual,
        Void,
        Volatile,
        While,

        Identifier,
        Literal,
        Semicolon,
        CloseParen,
        CloseSquare,
        OpenCurly,
        CloseCurly,
        Comma,
        Equal,
        PlusEqual,
        MinusEqual,
        StarEqual,
        SlashEqual,
        PercentEqual,
        AndEqual,
        HatEqual,
        BarEqual,
        ShiftLeftEqual,
        ShiftRightEqual,
        Question,
        Colon,
        ColonColon,
        LogOr,
        LogAnd,
        Bar,
        Hat,
        Ampersand,
        EqualEqual,
        NotEqual,
        Less,
        OpenAngle = Less,
        LessEqual,
        Greater,
        CloseAngle = Greater,
        GreaterEqual,
        Coalesce,
        ShiftLeft,
        ShiftRight,
        Plus,
        Minus,
        Star,
        Slash,
        Percent,
        Tilde,
        Bang,
        PlusPlus,
        MinusMinus,
        OpenParen,
        OpenSquare,
        Dot,
        Arrow,

        BOF,
        EOF,

        Comment,

        Error,
        Invalid     // must be last
    }
}
